package com.mhh.selary.backend.controller.config;

import com.mhh.selary.backend.api.config.ISelaryConfigService;
import com.mhh.selary.backend.dto.IdDTO;
import com.mhh.selary.backend.dto.config.EnvListDTO;
import com.mhh.selary.backend.dto.config.EnvSaveDTO;
import com.mhh.selary.backend.dto.config.PropConfigByGroupDTO;
import com.mhh.selary.backend.dto.config.PropSaveDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author mhh
 * @date 2020-09-02 09:22:26
 */
@Slf4j
@RestController
@Api(tags = "配置管理")
@RequestMapping("/config")
public class ConfigController {

    @Autowired
    private ISelaryConfigService selaryConfigService;

    @PostMapping("findAllEnv")
    @ApiOperation("查询环境配置信息")
    public EnvListDTO findAllEnv() {
        return EnvListDTO.builder().envList(selaryConfigService.findAll()).build();
    }

    @PostMapping("saveEnv")
    @ApiOperation("保存环境")
    public IdDTO saveEnv(@RequestBody EnvSaveDTO dto) {
        IdDTO resultDTO = new IdDTO();
        resultDTO.setId(selaryConfigService.saveEnv(dto));
        return resultDTO;
    }

    @PostMapping("delEnv")
    @ApiOperation("删除环境")
    public void delEnv(@RequestBody IdDTO dto) {
        selaryConfigService.delEnv(dto);
    }

    @PostMapping("findPropByEnv")
    @ApiOperation("查询某环境的属性配置分组信息")
    public PropConfigByGroupDTO findPropByEnv(@RequestBody IdDTO dto) {
        return selaryConfigService.findPropConfigByGroup(dto.getId());
    }

    @PostMapping("saveProp")
    @ApiOperation("保存属性配置")
    public IdDTO saveProp(@RequestBody PropSaveDTO dto) {
        IdDTO resultDTO = new IdDTO();
        resultDTO.setId(selaryConfigService.saveProp(dto));
        return resultDTO;
    }

    @PostMapping("delProp")
    @ApiOperation("删除属性配置")
    public void delProp(@RequestBody IdDTO dto) {
        selaryConfigService.delProp(dto);
    }
}
